package com.bookcity.utils;

import com.bookcity.enums.BaseEnum;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author: Trioutia
 * @Date: 2022/5/12 - 05 - 12 - 12:05
 * @Description: com.bookcity.utils
 * @version: 1.0
 */
public class UtilEnum {

    //  int转单个枚举值
    public static <E extends Enum<E> & BaseEnum> E getEnum(Class<E> type, int code) {
        for (E each : type.getEnumConstants()) {
            if (each.getCode() == code) {
                return each;
            }
        }
        return null;
    }

    //  int转List一堆枚举值
    public static <E extends Enum<E> & BaseEnum> List<E> getEnums(Class<E> type, int zoon) {

        List<E> enums = new ArrayList<>();

        if (getEnum(type,0) != null){
            enums.add( getEnum(type,0) );
        }

        for (int cnt=1 , i=0 ; cnt<=zoon ; cnt<<=1 , i++){
            if ( (zoon & cnt) > 0 ){
                enums.add( getEnum(type,zoon & cnt) );
            }
        }

        //if ( enums.size() == 0 ) enums = null;

        return enums;
    }

    //  一堆字符串转一堆int(对应枚举)
    public static <E extends Enum<E> & BaseEnum> int getEnumsCode(Class<E> type, String[] zoon){

        int rec = 0;

        for (String item : zoon){

            rec |= Enum.valueOf(type , item.trim()).getCode();

        }

        return rec;

    }

}
